package com.yupi.springbootinit.statemachine.core;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 状态转换记录实体
 * 用于记录所有状态转换的历史
 *
 * @TableName state_transition_record
 */
@TableName(value = "state_transition_record")
@Data
public class StateTransitionRecord implements Serializable {

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 业务实体ID
     */
    private Long entityId;

    /**
     * 业务实体类型
     */
    private String entityType;

    /**
     * 源状态编码
     */
    private String fromStateCode;

    /**
     * 源状态描述
     */
    private String fromStateDesc;

    /**
     * 目标状态编码
     */
    private String toStateCode;

    /**
     * 目标状态描述
     */
    private String toStateDesc;

    /**
     * 触发事件编码
     */
    private String eventCode;

    /**
     * 触发事件描述
     */
    private String eventDesc;

    /**
     * 操作用户ID
     */
    private Long operatorId;

    /**
     * 操作用户名
     */
    private String operatorName;

    /**
     * 转换是否成功
     */
    private Boolean success;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 转换耗时（毫秒）
     */
    private Long duration;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 扩展参数（JSON格式）
     */
    private String parameters;

    /**
     * 创建时间
     */
    private Date createTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}